<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FabGL: Terminal Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(initResizable);
/* @license-end */</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">FabGL
   </div>
   <div id="projectbrief">ESP32 Display Controller and Graphics Library</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classfabgl_1_1_terminal.html','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="classfabgl_1_1_terminal-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">Terminal Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>An ANSI-VT100 compatible display terminal.  
 <a href="classfabgl_1_1_terminal.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="terminal_8h_source.html">terminal.h</a>&gt;</code></p>

<p>Inherits Stream.</p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aab6042247424cf6af1a4cda905b55b95"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_aab6042247424cf6af1a4cda905b55b95.html#aab6042247424cf6af1a4cda905b55b95">activate</a> (<a class="el" href="group___enumerations_ga1743e3458e6f97a06488133ec83ba679.html#ga1743e3458e6f97a06488133ec83ba679">TerminalTransition</a> transition=<a class="el" href="group___enumerations_ga8ac9813c9c9df8a1e7f6ec66b346f08e.html#gga8ac9813c9c9df8a1e7f6ec66b346f08ea6adf97f83acf6453d4a6a4b1070f3754">TerminalTransition::None</a>)</td></tr>
<tr class="memdesc:aab6042247424cf6af1a4cda905b55b95"><td class="mdescLeft">&#160;</td><td class="mdescRight">Activates this terminal for input and output.  <a href="classfabgl_1_1_terminal_aab6042247424cf6af1a4cda905b55b95.html#aab6042247424cf6af1a4cda905b55b95">More...</a><br /></td></tr>
<tr class="separator:aab6042247424cf6af1a4cda905b55b95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4549a76725f2e4c013e4d57018366109"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_a4549a76725f2e4c013e4d57018366109.html#a4549a76725f2e4c013e4d57018366109">available</a> ()</td></tr>
<tr class="memdesc:a4549a76725f2e4c013e4d57018366109"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the number of codes available in the keyboard queue.  <a href="classfabgl_1_1_terminal_a4549a76725f2e4c013e4d57018366109.html#a4549a76725f2e4c013e4d57018366109">More...</a><br /></td></tr>
<tr class="separator:a4549a76725f2e4c013e4d57018366109"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86aa7db83a28e2662e01c57a36681cb0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_a86aa7db83a28e2662e01c57a36681cb0.html#a86aa7db83a28e2662e01c57a36681cb0">availableForWrite</a> ()</td></tr>
<tr class="memdesc:a86aa7db83a28e2662e01c57a36681cb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines number of codes that the display input queue can still accept.  <a href="classfabgl_1_1_terminal_a86aa7db83a28e2662e01c57a36681cb0.html#a86aa7db83a28e2662e01c57a36681cb0">More...</a><br /></td></tr>
<tr class="separator:a86aa7db83a28e2662e01c57a36681cb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aebaecc1fa474fddc48dd5778024b19a5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_aebaecc1fa474fddc48dd5778024b19a5.html#aebaecc1fa474fddc48dd5778024b19a5">begin</a> (<a class="el" href="classfabgl_1_1_base_display_controller.html">BaseDisplayController</a> *displayController, int maxColumns=-1, int maxRows=-1, <a class="el" href="classfabgl_1_1_keyboard.html">Keyboard</a> *<a class="el" href="classfabgl_1_1_terminal_ab7bbbedef758e471e6eb693acfb17c33.html#ab7bbbedef758e471e6eb693acfb17c33">keyboard</a>=nullptr)</td></tr>
<tr class="memdesc:aebaecc1fa474fddc48dd5778024b19a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the terminal.  <a href="classfabgl_1_1_terminal_aebaecc1fa474fddc48dd5778024b19a5.html#aebaecc1fa474fddc48dd5778024b19a5">More...</a><br /></td></tr>
<tr class="separator:aebaecc1fa474fddc48dd5778024b19a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac48ba3f0af412ea314c7fd9b324b7e73"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classfabgl_1_1_canvas.html">Canvas</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_ac48ba3f0af412ea314c7fd9b324b7e73.html#ac48ba3f0af412ea314c7fd9b324b7e73">canvas</a> ()</td></tr>
<tr class="memdesc:ac48ba3f0af412ea314c7fd9b324b7e73"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets associated canvas object.  <a href="classfabgl_1_1_terminal_ac48ba3f0af412ea314c7fd9b324b7e73.html#ac48ba3f0af412ea314c7fd9b324b7e73">More...</a><br /></td></tr>
<tr class="separator:ac48ba3f0af412ea314c7fd9b324b7e73"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2da678d7453efcfed190b99ac93a53d0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_a2da678d7453efcfed190b99ac93a53d0.html#a2da678d7453efcfed190b99ac93a53d0">clear</a> (bool moveCursor=true)</td></tr>
<tr class="memdesc:a2da678d7453efcfed190b99ac93a53d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears the screen.  <a href="classfabgl_1_1_terminal_a2da678d7453efcfed190b99ac93a53d0.html#a2da678d7453efcfed190b99ac93a53d0">More...</a><br /></td></tr>
<tr class="separator:a2da678d7453efcfed190b99ac93a53d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a068123b964647130439aa949370181dc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_a068123b964647130439aa949370181dc.html#a068123b964647130439aa949370181dc">connectLocally</a> ()</td></tr>
<tr class="memdesc:a068123b964647130439aa949370181dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Permits using of terminal locally.  <a href="classfabgl_1_1_terminal_a068123b964647130439aa949370181dc.html#a068123b964647130439aa949370181dc">More...</a><br /></td></tr>
<tr class="separator:a068123b964647130439aa949370181dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1dda18e2c27808389d9e514d185a49e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_aa1dda18e2c27808389d9e514d185a49e.html#aa1dda18e2c27808389d9e514d185a49e">connectSerialPort</a> (HardwareSerial &amp;serialPort, bool autoXONXOFF=true)</td></tr>
<tr class="memdesc:aa1dda18e2c27808389d9e514d185a49e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connects a remote host using the specified serial port.  <a href="classfabgl_1_1_terminal_aa1dda18e2c27808389d9e514d185a49e.html#aa1dda18e2c27808389d9e514d185a49e">More...</a><br /></td></tr>
<tr class="separator:aa1dda18e2c27808389d9e514d185a49e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a670917860bfd8e7fbbfa572c16d14ab3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_a670917860bfd8e7fbbfa572c16d14ab3.html#a670917860bfd8e7fbbfa572c16d14ab3">connectSerialPort</a> (uint32_t baud, uint32_t config, int rxPin, int txPin, <a class="el" href="group___enumerations_gae88006c219f95bae663fe0f2a2561dd7.html#gae88006c219f95bae663fe0f2a2561dd7">FlowControl</a> flowControl, bool inverted=false)</td></tr>
<tr class="memdesc:a670917860bfd8e7fbbfa572c16d14ab3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connects a remote host using UART.  <a href="classfabgl_1_1_terminal_a670917860bfd8e7fbbfa572c16d14ab3.html#a670917860bfd8e7fbbfa572c16d14ab3">More...</a><br /></td></tr>
<tr class="separator:a670917860bfd8e7fbbfa572c16d14ab3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8308b4bb6079733f4b77ced9d46da7a9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_a8308b4bb6079733f4b77ced9d46da7a9.html#a8308b4bb6079733f4b77ced9d46da7a9">deactivate</a> ()</td></tr>
<tr class="memdesc:a8308b4bb6079733f4b77ced9d46da7a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deactivates this terminal.  <a href="classfabgl_1_1_terminal_a8308b4bb6079733f4b77ced9d46da7a9.html#a8308b4bb6079733f4b77ced9d46da7a9">More...</a><br /></td></tr>
<tr class="separator:a8308b4bb6079733f4b77ced9d46da7a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e2c950db07da337819f6e47e91c8d9a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_a4e2c950db07da337819f6e47e91c8d9a.html#a4e2c950db07da337819f6e47e91c8d9a">disableSerialPortRX</a> (bool value)</td></tr>
<tr class="memdesc:a4e2c950db07da337819f6e47e91c8d9a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables/Enables serial port RX.  <a href="classfabgl_1_1_terminal_a4e2c950db07da337819f6e47e91c8d9a.html#a4e2c950db07da337819f6e47e91c8d9a">More...</a><br /></td></tr>
<tr class="separator:a4e2c950db07da337819f6e47e91c8d9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa447d23026e169f2703c833283f114a0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_aa447d23026e169f2703c833283f114a0.html#aa447d23026e169f2703c833283f114a0">disconnectLocally</a> ()</td></tr>
<tr class="memdesc:aa447d23026e169f2703c833283f114a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Avoids using of terminal locally.  <a href="classfabgl_1_1_terminal_aa447d23026e169f2703c833283f114a0.html#aa447d23026e169f2703c833283f114a0">More...</a><br /></td></tr>
<tr class="separator:aa447d23026e169f2703c833283f114a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aace245bfe6cab7b4339bd691077e1c23"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_aace245bfe6cab7b4339bd691077e1c23.html#aace245bfe6cab7b4339bd691077e1c23">enableCursor</a> (bool value)</td></tr>
<tr class="memdesc:aace245bfe6cab7b4339bd691077e1c23"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables or disables cursor.  <a href="classfabgl_1_1_terminal_aace245bfe6cab7b4339bd691077e1c23.html#aace245bfe6cab7b4339bd691077e1c23">More...</a><br /></td></tr>
<tr class="separator:aace245bfe6cab7b4339bd691077e1c23"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf81d3fdaf258088d7692fa70cece087"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_aaf81d3fdaf258088d7692fa70cece087.html#aaf81d3fdaf258088d7692fa70cece087">end</a> ()</td></tr>
<tr class="memdesc:aaf81d3fdaf258088d7692fa70cece087"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finalizes the terminal.  <a href="classfabgl_1_1_terminal_aaf81d3fdaf258088d7692fa70cece087.html#aaf81d3fdaf258088d7692fa70cece087">More...</a><br /></td></tr>
<tr class="separator:aaf81d3fdaf258088d7692fa70cece087"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af04a513134593e61c4575b266c8bf0ee"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_af04a513134593e61c4575b266c8bf0ee.html#af04a513134593e61c4575b266c8bf0ee">flush</a> (bool waitVSync)</td></tr>
<tr class="memdesc:af04a513134593e61c4575b266c8bf0ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Waits for all codes sent to the display has been processed.  <a href="classfabgl_1_1_terminal_af04a513134593e61c4575b266c8bf0ee.html#af04a513134593e61c4575b266c8bf0ee">More...</a><br /></td></tr>
<tr class="separator:af04a513134593e61c4575b266c8bf0ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adac116554b543b7c4228c018a85882f5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_adac116554b543b7c4228c018a85882f5.html#adac116554b543b7c4228c018a85882f5">flush</a> ()</td></tr>
<tr class="memdesc:adac116554b543b7c4228c018a85882f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Waits for all codes sent to the display has been processed.  <a href="classfabgl_1_1_terminal_adac116554b543b7c4228c018a85882f5.html#adac116554b543b7c4228c018a85882f5">More...</a><br /></td></tr>
<tr class="separator:adac116554b543b7c4228c018a85882f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e9094a53fd8a44ad7a061abae461e5c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_a6e9094a53fd8a44ad7a061abae461e5c.html#a6e9094a53fd8a44ad7a061abae461e5c">getColumns</a> ()</td></tr>
<tr class="memdesc:a6e9094a53fd8a44ad7a061abae461e5c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of columns.  <a href="classfabgl_1_1_terminal_a6e9094a53fd8a44ad7a061abae461e5c.html#a6e9094a53fd8a44ad7a061abae461e5c">More...</a><br /></td></tr>
<tr class="separator:a6e9094a53fd8a44ad7a061abae461e5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1bb8ac2a73a5d9e6256505e1bf51c6a9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_a1bb8ac2a73a5d9e6256505e1bf51c6a9.html#a1bb8ac2a73a5d9e6256505e1bf51c6a9">getRows</a> ()</td></tr>
<tr class="memdesc:a1bb8ac2a73a5d9e6256505e1bf51c6a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of lines.  <a href="classfabgl_1_1_terminal_a1bb8ac2a73a5d9e6256505e1bf51c6a9.html#a1bb8ac2a73a5d9e6256505e1bf51c6a9">More...</a><br /></td></tr>
<tr class="separator:a1bb8ac2a73a5d9e6256505e1bf51c6a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1f512ab0fcc05612f8e3d6a4664ce9a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_aa1f512ab0fcc05612f8e3d6a4664ce9a.html#aa1f512ab0fcc05612f8e3d6a4664ce9a">isActive</a> ()</td></tr>
<tr class="memdesc:aa1f512ab0fcc05612f8e3d6a4664ce9a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines if this terminal is active or not.  <a href="classfabgl_1_1_terminal_aa1f512ab0fcc05612f8e3d6a4664ce9a.html#aa1f512ab0fcc05612f8e3d6a4664ce9a">More...</a><br /></td></tr>
<tr class="separator:aa1f512ab0fcc05612f8e3d6a4664ce9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7bbbedef758e471e6eb693acfb17c33"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classfabgl_1_1_keyboard.html">Keyboard</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_ab7bbbedef758e471e6eb693acfb17c33.html#ab7bbbedef758e471e6eb693acfb17c33">keyboard</a> ()</td></tr>
<tr class="memdesc:ab7bbbedef758e471e6eb693acfb17c33"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets associated keyboard object.  <a href="classfabgl_1_1_terminal_ab7bbbedef758e471e6eb693acfb17c33.html#ab7bbbedef758e471e6eb693acfb17c33">More...</a><br /></td></tr>
<tr class="separator:ab7bbbedef758e471e6eb693acfb17c33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a72770033c3a06f499a251909efba87c7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_a72770033c3a06f499a251909efba87c7.html#a72770033c3a06f499a251909efba87c7">loadFont</a> (FontInfo const *font)</td></tr>
<tr class="memdesc:a72770033c3a06f499a251909efba87c7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the font to use.  <a href="classfabgl_1_1_terminal_a72770033c3a06f499a251909efba87c7.html#a72770033c3a06f499a251909efba87c7">More...</a><br /></td></tr>
<tr class="separator:a72770033c3a06f499a251909efba87c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f30b1de2931fbb091221076c8d6d4f0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_a7f30b1de2931fbb091221076c8d6d4f0.html#a7f30b1de2931fbb091221076c8d6d4f0">localInsert</a> (uint8_t c)</td></tr>
<tr class="memdesc:a7f30b1de2931fbb091221076c8d6d4f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Injects keys into the keyboard queue.  <a href="classfabgl_1_1_terminal_a7f30b1de2931fbb091221076c8d6d4f0.html#a7f30b1de2931fbb091221076c8d6d4f0">More...</a><br /></td></tr>
<tr class="separator:a7f30b1de2931fbb091221076c8d6d4f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80440833b3e2b77b011b46da8529199f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_a80440833b3e2b77b011b46da8529199f.html#a80440833b3e2b77b011b46da8529199f">localWrite</a> (uint8_t c)</td></tr>
<tr class="memdesc:a80440833b3e2b77b011b46da8529199f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Injects keys into the keyboard queue.  <a href="classfabgl_1_1_terminal_a80440833b3e2b77b011b46da8529199f.html#a80440833b3e2b77b011b46da8529199f">More...</a><br /></td></tr>
<tr class="separator:a80440833b3e2b77b011b46da8529199f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f3bb549aa104c6d45cc3c1691707c88"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_a5f3bb549aa104c6d45cc3c1691707c88.html#a5f3bb549aa104c6d45cc3c1691707c88">localWrite</a> (char const *str)</td></tr>
<tr class="memdesc:a5f3bb549aa104c6d45cc3c1691707c88"><td class="mdescLeft">&#160;</td><td class="mdescRight">Injects a string of keys into the keyboard queue.  <a href="classfabgl_1_1_terminal_a5f3bb549aa104c6d45cc3c1691707c88.html#a5f3bb549aa104c6d45cc3c1691707c88">More...</a><br /></td></tr>
<tr class="separator:a5f3bb549aa104c6d45cc3c1691707c88"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9040fa1d479d71edf3a826f4691c35c4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_a9040fa1d479d71edf3a826f4691c35c4.html#a9040fa1d479d71edf3a826f4691c35c4">peek</a> ()</td></tr>
<tr class="memdesc:a9040fa1d479d71edf3a826f4691c35c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads a code from the keyboard without advancing to the next one.  <a href="classfabgl_1_1_terminal_a9040fa1d479d71edf3a826f4691c35c4.html#a9040fa1d479d71edf3a826f4691c35c4">More...</a><br /></td></tr>
<tr class="separator:a9040fa1d479d71edf3a826f4691c35c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17b1170595bbe708b62bc49c1351eef1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_a17b1170595bbe708b62bc49c1351eef1.html#a17b1170595bbe708b62bc49c1351eef1">pollSerialPort</a> ()</td></tr>
<tr class="memdesc:a17b1170595bbe708b62bc49c1351eef1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pools the serial port for incoming data.  <a href="classfabgl_1_1_terminal_a17b1170595bbe708b62bc49c1351eef1.html#a17b1170595bbe708b62bc49c1351eef1">More...</a><br /></td></tr>
<tr class="separator:a17b1170595bbe708b62bc49c1351eef1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaab5dab5b969a87f538242e524431637"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_aaab5dab5b969a87f538242e524431637.html#aaab5dab5b969a87f538242e524431637">read</a> ()</td></tr>
<tr class="memdesc:aaab5dab5b969a87f538242e524431637"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads codes from keyboard.  <a href="classfabgl_1_1_terminal_aaab5dab5b969a87f538242e524431637.html#aaab5dab5b969a87f538242e524431637">More...</a><br /></td></tr>
<tr class="separator:aaab5dab5b969a87f538242e524431637"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abebbdf8f8248aa120af95dbf92c64ee5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_abebbdf8f8248aa120af95dbf92c64ee5.html#abebbdf8f8248aa120af95dbf92c64ee5">read</a> (int timeOutMS)</td></tr>
<tr class="memdesc:abebbdf8f8248aa120af95dbf92c64ee5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads codes from keyboard specyfing timeout.  <a href="classfabgl_1_1_terminal_abebbdf8f8248aa120af95dbf92c64ee5.html#abebbdf8f8248aa120af95dbf92c64ee5">More...</a><br /></td></tr>
<tr class="separator:abebbdf8f8248aa120af95dbf92c64ee5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0a417d6d62255946aa582980b4a74a7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_ad0a417d6d62255946aa582980b4a74a7.html#ad0a417d6d62255946aa582980b4a74a7">send</a> (uint8_t c)</td></tr>
<tr class="memdesc:ad0a417d6d62255946aa582980b4a74a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Like <a class="el" href="classfabgl_1_1_terminal_a80440833b3e2b77b011b46da8529199f.html#a80440833b3e2b77b011b46da8529199f" title="Injects keys into the keyboard queue. ">localWrite()</a> but sends also to serial port if connected.  <a href="classfabgl_1_1_terminal_ad0a417d6d62255946aa582980b4a74a7.html#ad0a417d6d62255946aa582980b4a74a7">More...</a><br /></td></tr>
<tr class="separator:ad0a417d6d62255946aa582980b4a74a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad725948423717030f8c688d9cf3a688c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_ad725948423717030f8c688d9cf3a688c.html#ad725948423717030f8c688d9cf3a688c">send</a> (char const *str)</td></tr>
<tr class="memdesc:ad725948423717030f8c688d9cf3a688c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Like <a class="el" href="classfabgl_1_1_terminal_a80440833b3e2b77b011b46da8529199f.html#a80440833b3e2b77b011b46da8529199f" title="Injects keys into the keyboard queue. ">localWrite()</a> but sends also to serial port if connected.  <a href="classfabgl_1_1_terminal_ad725948423717030f8c688d9cf3a688c.html#ad725948423717030f8c688d9cf3a688c">More...</a><br /></td></tr>
<tr class="separator:ad725948423717030f8c688d9cf3a688c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6f04360ccc33a519bdff509fd81df62"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_ae6f04360ccc33a519bdff509fd81df62.html#ae6f04360ccc33a519bdff509fd81df62">setBackgroundColor</a> (<a class="el" href="group___enumerations_gab87bacfdad76e61b9412d7124be44c1c.html#gab87bacfdad76e61b9412d7124be44c1c">Color</a> color, bool setAsDefault=true)</td></tr>
<tr class="memdesc:ae6f04360ccc33a519bdff509fd81df62"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the background color.  <a href="classfabgl_1_1_terminal_ae6f04360ccc33a519bdff509fd81df62.html#ae6f04360ccc33a519bdff509fd81df62">More...</a><br /></td></tr>
<tr class="separator:ae6f04360ccc33a519bdff509fd81df62"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afad23f091c4bb07a71963f5f7aa1831d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_afad23f091c4bb07a71963f5f7aa1831d.html#afad23f091c4bb07a71963f5f7aa1831d">setForegroundColor</a> (<a class="el" href="group___enumerations_gab87bacfdad76e61b9412d7124be44c1c.html#gab87bacfdad76e61b9412d7124be44c1c">Color</a> color, bool setAsDefault=true)</td></tr>
<tr class="memdesc:afad23f091c4bb07a71963f5f7aa1831d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the foreground color.  <a href="classfabgl_1_1_terminal_afad23f091c4bb07a71963f5f7aa1831d.html#afad23f091c4bb07a71963f5f7aa1831d">More...</a><br /></td></tr>
<tr class="separator:afad23f091c4bb07a71963f5f7aa1831d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b5a116dd0c23f47197ff61b5d9d7f41"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_a4b5a116dd0c23f47197ff61b5d9d7f41.html#a4b5a116dd0c23f47197ff61b5d9d7f41">setLogStream</a> (Stream &amp;stream)</td></tr>
<tr class="memdesc:a4b5a116dd0c23f47197ff61b5d9d7f41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the stream where to output debugging logs.  <a href="classfabgl_1_1_terminal_a4b5a116dd0c23f47197ff61b5d9d7f41.html#a4b5a116dd0c23f47197ff61b5d9d7f41">More...</a><br /></td></tr>
<tr class="separator:a4b5a116dd0c23f47197ff61b5d9d7f41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae338b7372e1272a016ee97143d7351f8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_ae338b7372e1272a016ee97143d7351f8.html#ae338b7372e1272a016ee97143d7351f8">setTerminalType</a> (<a class="el" href="group___enumerations_ga67edd9a04814c247a553dfde047e6f62.html#ga67edd9a04814c247a553dfde047e6f62">TermType</a> value)</td></tr>
<tr class="memdesc:ae338b7372e1272a016ee97143d7351f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the terminal type to emulate.  <a href="classfabgl_1_1_terminal_ae338b7372e1272a016ee97143d7351f8.html#ae338b7372e1272a016ee97143d7351f8">More...</a><br /></td></tr>
<tr class="separator:ae338b7372e1272a016ee97143d7351f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea106b64cc1ec83c9ed25f7802831fb2"><td class="memItemLeft" align="right" valign="top">TermInfo const  &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_aea106b64cc1ec83c9ed25f7802831fb2.html#aea106b64cc1ec83c9ed25f7802831fb2">terminalType</a> ()</td></tr>
<tr class="memdesc:aea106b64cc1ec83c9ed25f7802831fb2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines current terminal type.  <a href="classfabgl_1_1_terminal_aea106b64cc1ec83c9ed25f7802831fb2.html#aea106b64cc1ec83c9ed25f7802831fb2">More...</a><br /></td></tr>
<tr class="separator:aea106b64cc1ec83c9ed25f7802831fb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afcc6153b0a41d2380b5aeabe4313ff6a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_afcc6153b0a41d2380b5aeabe4313ff6a.html#afcc6153b0a41d2380b5aeabe4313ff6a">unRead</a> (uint8_t c)</td></tr>
<tr class="memdesc:afcc6153b0a41d2380b5aeabe4313ff6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Injects keys into the keyboard queue.  <a href="classfabgl_1_1_terminal_afcc6153b0a41d2380b5aeabe4313ff6a.html#afcc6153b0a41d2380b5aeabe4313ff6a">More...</a><br /></td></tr>
<tr class="separator:afcc6153b0a41d2380b5aeabe4313ff6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27dbdfaa93b84ae587d92854e536a419"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_a27dbdfaa93b84ae587d92854e536a419.html#a27dbdfaa93b84ae587d92854e536a419">waitFor</a> (int value, int timeOutMS=-1)</td></tr>
<tr class="memdesc:a27dbdfaa93b84ae587d92854e536a419"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait for a specific code from keyboard, discarding all previous codes.  <a href="classfabgl_1_1_terminal_a27dbdfaa93b84ae587d92854e536a419.html#a27dbdfaa93b84ae587d92854e536a419">More...</a><br /></td></tr>
<tr class="separator:a27dbdfaa93b84ae587d92854e536a419"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c66fc8d559f4956d4ccea196299bca7"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_a7c66fc8d559f4956d4ccea196299bca7.html#a7c66fc8d559f4956d4ccea196299bca7">write</a> (const uint8_t *buffer, size_t size)</td></tr>
<tr class="memdesc:a7c66fc8d559f4956d4ccea196299bca7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sends specified number of codes to the display.  <a href="classfabgl_1_1_terminal_a7c66fc8d559f4956d4ccea196299bca7.html#a7c66fc8d559f4956d4ccea196299bca7">More...</a><br /></td></tr>
<tr class="separator:a7c66fc8d559f4956d4ccea196299bca7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a567dd45033d29f066653e6a26b92cbf4"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_a567dd45033d29f066653e6a26b92cbf4.html#a567dd45033d29f066653e6a26b92cbf4">write</a> (uint8_t c)</td></tr>
<tr class="memdesc:a567dd45033d29f066653e6a26b92cbf4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sends a single code to the display.  <a href="classfabgl_1_1_terminal_a567dd45033d29f066653e6a26b92cbf4.html#a567dd45033d29f066653e6a26b92cbf4">More...</a><br /></td></tr>
<tr class="separator:a567dd45033d29f066653e6a26b92cbf4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:af05ed15439143da3bc5b6b58d2e65daa"><td class="memItemLeft" align="right" valign="top">Delegate&lt; char const * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_af05ed15439143da3bc5b6b58d2e65daa.html#af05ed15439143da3bc5b6b58d2e65daa">onUserSequence</a></td></tr>
<tr class="memdesc:af05ed15439143da3bc5b6b58d2e65daa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delegate called whenever a new user sequence has been received.  <a href="classfabgl_1_1_terminal_af05ed15439143da3bc5b6b58d2e65daa.html#af05ed15439143da3bc5b6b58d2e65daa">More...</a><br /></td></tr>
<tr class="separator:af05ed15439143da3bc5b6b58d2e65daa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41c6325db16da56b81f05e8d9dcabd0e"><td class="memItemLeft" align="right" valign="top">Delegate&lt; <a class="el" href="group___enumerations_gad0e6e31d5953384be4ea987eb3923e02.html#gad0e6e31d5953384be4ea987eb3923e02">VirtualKey</a> *, bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_a41c6325db16da56b81f05e8d9dcabd0e.html#a41c6325db16da56b81f05e8d9dcabd0e">onVirtualKey</a></td></tr>
<tr class="memdesc:a41c6325db16da56b81f05e8d9dcabd0e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delegate called whenever a new virtual key is received from keyboard.  <a href="classfabgl_1_1_terminal_a41c6325db16da56b81f05e8d9dcabd0e.html#a41c6325db16da56b81f05e8d9dcabd0e">More...</a><br /></td></tr>
<tr class="separator:a41c6325db16da56b81f05e8d9dcabd0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:aade947364dc37ddbcd51607715332dd5"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_aade947364dc37ddbcd51607715332dd5.html#aade947364dc37ddbcd51607715332dd5">inputConsumerTaskStackSize</a> = FABGLIB_DEFAULT_TERMINAL_INPUT_CONSUMER_TASK_STACK_SIZE</td></tr>
<tr class="memdesc:aade947364dc37ddbcd51607715332dd5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stack size of the task that processes <a class="el" href="classfabgl_1_1_terminal.html" title="An ANSI-VT100 compatible display terminal. ">Terminal</a> input stream.  <a href="classfabgl_1_1_terminal_aade947364dc37ddbcd51607715332dd5.html#aade947364dc37ddbcd51607715332dd5">More...</a><br /></td></tr>
<tr class="separator:aade947364dc37ddbcd51607715332dd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8508592f91c82a7a4a0c2edf4effce61"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_a8508592f91c82a7a4a0c2edf4effce61.html#a8508592f91c82a7a4a0c2edf4effce61">inputQueueSize</a> = FABGLIB_DEFAULT_TERMINAL_INPUT_QUEUE_SIZE</td></tr>
<tr class="memdesc:a8508592f91c82a7a4a0c2edf4effce61"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of characters the terminal can "write" without pause (increase if you have loss of characters in serial port).  <a href="classfabgl_1_1_terminal_a8508592f91c82a7a4a0c2edf4effce61.html#a8508592f91c82a7a4a0c2edf4effce61">More...</a><br /></td></tr>
<tr class="separator:a8508592f91c82a7a4a0c2edf4effce61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77b40b81c5e1ba039ed39891bf8c6a20"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_terminal_a77b40b81c5e1ba039ed39891bf8c6a20.html#a77b40b81c5e1ba039ed39891bf8c6a20">keyboardReaderTaskStackSize</a> = FABGLIB_DEFAULT_TERMINAL_KEYBOARD_READER_TASK_STACK_SIZE</td></tr>
<tr class="memdesc:a77b40b81c5e1ba039ed39891bf8c6a20"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stack size of the task that reads keys from keyboard and send ANSI/VT codes to output stream in <a class="el" href="classfabgl_1_1_terminal.html" title="An ANSI-VT100 compatible display terminal. ">Terminal</a>.  <a href="classfabgl_1_1_terminal_a77b40b81c5e1ba039ed39891bf8c6a20.html#a77b40b81c5e1ba039ed39891bf8c6a20">More...</a><br /></td></tr>
<tr class="separator:a77b40b81c5e1ba039ed39891bf8c6a20"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>An ANSI-VT100 compatible display terminal. </p>
<p>Implements most of common ANSI, VT52, VT100, VT200, VT300, VT420 and VT500 escape codes, like non-CSI codes (RIS, IND, DECID, DECDHL, etc..),<br />
 like CSI codes (private modes, CUP, TBC, etc..), like CSI-SGR codes (bold, italic, blinking, etc...) and like DCS codes (DECRQSS, etc..).<br />
 Supports convertion from PS/2 keyboard virtual keys to ANSI or VT codes (keypad, cursor keys, function keys, etc..).<br />
</p>
<p><a class="el" href="classfabgl_1_1_terminal.html" title="An ANSI-VT100 compatible display terminal. ">Terminal</a> can receive codes to display from Serial Port or it can be controlled directly from the application. In the same way <a class="el" href="classfabgl_1_1_terminal.html" title="An ANSI-VT100 compatible display terminal. ">Terminal</a> can send keyboard codes to a Serial Port or directly to the application.<br />
</p>
<p>For default it supports 80x25 or 132x25 characters at 640x350. However any custom resolution and text buffer size is supported specifying a custom font.<br />
</p>
<p>There are three cursors styles (block, underlined and bar), blinking or not blinking.</p>
<p><a class="el" href="classfabgl_1_1_terminal.html" title="An ANSI-VT100 compatible display terminal. ">Terminal</a> inherits from Stream so applications can use all Stream and Print input and output methods.</p>
<p><a class="el" href="classfabgl_1_1_terminal.html" title="An ANSI-VT100 compatible display terminal. ">Terminal</a> passes 95/110 of VTTEST VT100/VT102 Compatibility Test Score Sheet.</p>
<p>Example 1: </p><pre class="fragment">fabgl::VGAController VGAController;
fabgl::PS2Controller PS2Controller;
fabgl::Terminal      Terminal;

// Setup 80x25 columns loop-back terminal (send what you type on keyboard to the display)
void setup() {
  PS2Controller.begin(PS2Preset::KeyboardPort0);

  VGAController.begin();
  VGAController.setResolution(VGA_640x350_70HzAlt1);

  Terminal.begin(&amp;VGAController);
  Terminal.connectLocally();      // to use Terminal.read(), available(), etc..
  Terminal.enableCursor(true);
}

void loop() {
  if (Terminal.available()) {
    char c = Terminal.read();
    switch (c) {
      case 0x7F:       // DEL -&gt; backspace + ESC[K
        Terminal.write("\b\e[K");
        break;
      case 0x0D:       // CR  -&gt; CR + LF
        Terminal.write("\r\n");
        break;
      case 32 ... 126: // printable chars
        Terminal.write(c);
        break;
    }
  }
}
</pre><p>Example 2: </p><pre class="fragment">fabgl::VGAController VGAController;
fabgl::PS2Controller PS2Controller;
fabgl::Terminal      Terminal;

// Setup 80x25 columns terminal using UART2 to communicate with the server,
// VGA to display output and PS2 device as keyboard input
void setup() {
  Serial2.begin(115200);

  PS2Controller.begin(PS2Preset::KeyboardPort0);

  VGAController.begin();
  VGAController.setResolution(VGA_640x350_70HzAlt1);

  Terminal.begin(&amp;VGAController);
  Terminal.connectSerialPort(Serial2);
  Terminal.enableCursor(true);
}

void loop() {
  Terminal.pollSerialPort();
}</pre> <dl><dt><b>Examples: </b></dt><dd><a class="el" href="_others_2_keyboard_studio_2_keyboard_studio_8ino-example.html#_a1">Others/KeyboardStudio/KeyboardStudio.ino</a>, <a class="el" href="_s_s_d1306__o_l_e_d_2128x32_2_simple_terminal_out_2_simple_terminal_out_8ino-example.html#_a2">SSD1306_OLED/128x32/SimpleTerminalOut/SimpleTerminalOut.ino</a>, <a class="el" href="_s_s_d1306__o_l_e_d_2128x64_2_network_terminal_2_network_terminal_8ino-example.html#_a3">SSD1306_OLED/128x64/NetworkTerminal/NetworkTerminal.ino</a>, <a class="el" href="_s_s_d1306__o_l_e_d_2128x64_2_r_t_clock_2_r_t_clock_8ino-example.html#_a4">SSD1306_OLED/128x64/RTClock/RTClock.ino</a>, <a class="el" href="_s_s_d1306__o_l_e_d_2128x64_2_simple_terminal_out_2_simple_terminal_out_8ino-example.html#_a2">SSD1306_OLED/128x64/SimpleTerminalOut/SimpleTerminalOut.ino</a>, <a class="el" href="_s_t7789__t_f_t_2240x240_2_simple_terminal_out_2_simple_terminal_out_8ino-example.html#_a1">ST7789_TFT/240x240/SimpleTerminalOut/SimpleTerminalOut.ino</a>, <a class="el" href="_v_g_a_2_altair8800_2_altair8800_8ino-example.html#_a9">VGA/Altair8800/Altair8800.ino</a>, <a class="el" href="_v_g_a_2_ansi_terminal_2_ansi_terminal_8ino-example.html#_a2">VGA/AnsiTerminal/AnsiTerminal.ino</a>, <a class="el" href="_v_g_a_2_loopback_terminal_2_loopback_terminal_8ino-example.html#_a2">VGA/LoopbackTerminal/LoopbackTerminal.ino</a>, <a class="el" href="_v_g_a_2_multitasking_c_p_m_2_multitasking_c_p_m_8ino-example.html#_a11">VGA/MultitaskingCPM/MultitaskingCPM.ino</a>, <a class="el" href="_v_g_a_2_network_terminal_2_network_terminal_8ino-example.html#_a2">VGA/NetworkTerminal/NetworkTerminal.ino</a>, <a class="el" href="_v_g_a_2_simple_terminal_out_2_simple_terminal_out_8ino-example.html#_a1">VGA/SimpleTerminalOut/SimpleTerminalOut.ino</a>, <a class="el" href="_v_g_a_2_simple_text_terminal_out_2_simple_text_terminal_out_8ino-example.html#_a1">VGA/SimpleTextTerminalOut/SimpleTextTerminalOut.ino</a>, and <a class="el" href="_v_g_a_2_songs_2_songs_8ino-example.html#_a3">VGA/Songs/Songs.ino</a>.</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="terminal_8h_source.html#l00947">947</a> of file <a class="el" href="terminal_8h_source.html">terminal.h</a>.</p>
</div><hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="terminal_8h_source.html">terminal.h</a></li>
<li><a class="el" href="terminal_8cpp_source.html">terminal.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>fabgl</b></li><li class="navelem"><a class="el" href="classfabgl_1_1_terminal.html">Terminal</a></li>
    <li class="footer">Generated on Wed Dec 9 2020 16:48:32 for FabGL by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
  </ul>
</div>
</body>
</html>
